/*
 * 描述： <描述>
 * 修改人： rain
 * 修改时间： 2016年4月7日
 * 项目： rainhy-webcore
 */
package com.rainhy.webcore.transaction.context;

import org.springframework.transaction.TransactionDefinition;

/**
 * 事务传播性
 * 
 * @author rain
 * @version [版本号, 2016年4月7日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public enum TransactionDefinitionEnum {
    
    /** 如果存在一个事务，则支持当前事务。如果没有事务则开启一个新事务。 */
    PROPAGATION_REQUIRED(TransactionDefinition.PROPAGATION_REQUIRED),
    
    /** 如果存在一个事务，支持当前事务。如果没有事务，则非事务的执行。 */
    PROPAGATION_SUPPORTS(TransactionDefinition.PROPAGATION_SUPPORTS),
    
    /** 如果已经存在一个事务，支持当前事务。如果没有一个活动的事务，则抛出异常。 */
    PROPAGATION_MANDATORY(TransactionDefinition.PROPAGATION_MANDATORY),
    
    /** 总是开启一个新的事务。如果一个事务存在，则将这个存在的事务挂起。 */
    PROPAGATION_REQUIRES_NEW(TransactionDefinition.PROPAGATION_REQUIRES_NEW),
    
    /** 总是非事务地执行，并挂起任何存在的事务。 */
    PROPAGATION_NOT_SUPPORTED(TransactionDefinition.PROPAGATION_NOT_SUPPORTED),
    
    /** 总是非事务地执行，如果存在一个活动事务，则抛出异常。 */
    PROPAGATION_NEVER(TransactionDefinition.PROPAGATION_NEVER),
    
    /** 如果一个活动的事务存在，则运行在一个嵌套的事务中，如果没有活动事务，则按PROPAGATION_REQUIRED属性执行 */
    PROPAGATION_NESTED(TransactionDefinition.PROPAGATION_NESTED)
    
    ;
    
    private int propagationBehavior;
    
    TransactionDefinitionEnum(int propagationBehavior) {
        this.propagationBehavior = propagationBehavior;
    }
    
    public int getPropagationBehavior() {
        return propagationBehavior;
    }
}
